home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / games / spassion / source.lzh / SOURCE / FuncEnemy / ZAKO04.C < prev    next >
Text File  |  2000-03-20  |  3KB  |  119 lines

  1. /*
  2. #include <stdio.h>
  3. #include <iocslib.h>
  4. */
  5. /*
  6. アイテムを持っている敵
  7. とりあえずサイン波的な動き
  8. */
  9. #include <xsp2lib.h>
  10. #include "../SPASSION.H"
  11. #include "../player.h"
  12. #include "../enemy.h"
  13. #include "../eshot.h"
  14. #include "../effect.h"
  15. #include "../priority.h"
  16. #include "../sound.h"
  17. #include "../entry.h"
  18. #ifndef NULL
  19. #define NULL ((void *) 0)
  20. #endif
  21.  
  22. #define PALET_MAIN    0x0200
  23.  
  24. static short MoveEnemyZako04(ENEMY *);
  25. /*static void TiniEnemyZako04(ENEMY *);*/
  26.  
  27. #define PT_ST    0x40
  28. #define PT_END    0x40+1
  29.  
  30. /* 16x16キャラの当たり判定 */
  31. extern HIT_XY4    hit8_p;
  32. extern HIT_XY4    hit8_o;
  33. extern HIT_XY4    hit8_s;
  34.  
  35. /* InitEnemyZako00Hitと同じなのでいらない */
  36. void InitEnemyZako04Hit( void )
  37. {
  38. }
  39.  
  40. void InitEnemyZako04(ENEMY *ene)
  41. {
  42.     ene->info         = PALET_MAIN | PRIORITY_ZAKO;
  43.     ene->vx             = -1 * 65536;
  44.     ene->vy             = 0;
  45.     ene->hit_p[0]     = &hit8_p;ene->hit_p[1]=NULL;
  46.     ene->hit_o[0]     = &hit8_o;ene->hit_o[1]=NULL;
  47.     ene->hit_s[0]     = &hit8_s;ene->hit_s[1]=NULL;
  48.     ene->hp             = 1;
  49.     ene->no_dead     = 0;
  50.     ene->func_enemy_move = MoveEnemyZako04;
  51. /*    ene->func_enemy_tini = TiniEnemyZako04;*/
  52.  
  53. /*    entry_counter_stop = !0;*/        /* エントリーカウンター停止 */
  54. }
  55.  
  56.  
  57. static short MoveEnemyZako04( ENEMY *ene )
  58. {
  59. /*    short    anim_num;*/
  60.  
  61.     /* 速度を足して上位ワード(固定整数部)だけ取り出す */
  62.     ene->x = ((ene->lx += ene->vx) >> 16)-8;    /*-8は表示位置をずらすため*/
  63.     ene->y = ((ene->ly += ene->vy) >> 16)-8;
  64.  
  65.     ene->count=(ene->count+4)&255;
  66.     ene->vy=vy_tbl[12][ene->count];
  67.     ene->pt = obj_zako+PT_ST+(ene->anim_count++)/4;
  68.     if( ene->pt > obj_zako+PT_END ){
  69.         ene->pt = obj_zako+PT_ST;
  70.         ene->anim_count=0;
  71.     }
  72. /*    ene->hit_p[0]=&hit1_p[anim_num];*/
  73.     switch (ene->state){
  74.     case 0:
  75.         if(ENE_X < 128){
  76.             ene->state++;
  77.         }
  78.         break;
  79.     case 1:
  80. /*        if(ENE_X < 128){
  81.             ene->lx = 128*65536;
  82.             ene->ly = 192*65536;
  83.             ene->vx = 0;
  84.             ene->vy = 0;
  85.         }
  86.             if( BITSNS(0x04) & BIT(1) ){
  87.                 while( BITSNS(0x04) & BIT(1) );
  88.                 entry_counter_stop = 0;
  89.                 return (0);
  90.             }
  91. */
  92.         /* 画面外に出たら消去 */
  93.         if( ENE_X < 16 - 8 )
  94.             return (0);
  95.     }
  96.  
  97.     /* ダメージを受けた時の処理 */
  98.     if(ene->damage){
  99.         MakeEffect(EFFECT_EXPLMINI, 0, ene->x, ene->y);
  100.         SetSE(SE_EXPL_S);    /* 爆発音 */
  101.         ene->player->score += 1;
  102.         if( ene->arg )
  103.             MakeEnemy(ITEM , ene->x+8  , ene->y+8, 1,  ene);        /* アイテム発生 */
  104.         else
  105.             MakeEnemy(ITEM , ene->x+8  , ene->y+8, 0,  ene);        /* アイテム発生 */
  106.         return (0);        /* 消去 */
  107.     }
  108.  
  109.     xsp_set_st(ene);
  110.  
  111.     return(1);
  112. }
  113.  
  114. /*
  115. static void TiniEnemyZako04(ENEMY * p)
  116. {
  117. }
  118. */
  119.